jQuery(document).ready(function () {
    $('#msg').focus();
    
    updateOnlinePlayers();
    updateMessages();
    var onlineTimer = window.setInterval("updateOnlinePlayers();", 1000);
    var messagesTimer = window.setInterval("updateMessages();", 1000);
    
	$('.post a').each(function() {
		var trigger = $(this), 
                    state = false, 
                    el = trigger.parent().parent().next('.entry');
		trigger.click(function() {
			state = !state;
			el.slideToggle();
			trigger.toggleClass('inactive');
		});
	});
    
    $('#sendMsg').submit(function() {
        if ($('#msg').val() == "") {
            return false;
        }
        
        var login = getCookie('login');
        var color = getCookie('color');
        var message = $('#msg').val();
        var data = {
            'login' : login,
            'color' : color,
            'message' : message
        };
       
        $.post(
                'send.php',
                "data=" + $.toJSON(data),
                function(res, status) {
                    if (!res.result) {
                        alert(res.error);
                    }
                    else {
                        if ($('#msg-wrapper').height() > 300) {
                            $($('.chat-message').get(0)).remove();
                        }
                        html = '<div id="" class="chat-message">' +
                                '<span style="color:#' + color.substr(0, 6) + ';">' + login + '</span>' + ' [chat]: ' + message +
                                '</div>';
                        $('#msg-wrapper').append(html);
                    }
                },
                'json'
            );
        $('#msg').val("");
        return false;
    });
    
    $('#color-picker').colorPicker({			
            click: function(color) {
                $('#output').html(color);
            } 
    });
    
    $('#settings').submit(function() {
        var $nickname = $('#nickname');
        var nick = $nickname.val();
        if (nick == '') {
            $nickname.css('background-color', '#FA8072');
            return false;
        }
      
        var data = {
            'nick' : nick,
            'color': $('#output').text().substr(1)+"00"
        };
        
        $.post(
                'settings.php',
                "data=" + $.toJSON(data),
                function(res, status) {
                    $($('.entry').get(0)).hide();
                }
        );
        return false;
        
    });
    
    $('#invite').submit(function() {
        $('#invite-login').css('background-color', '#FFFFFF');
        $('#invite-email').css('background-color', '#FFFFFF');
        
        var $out = $('#error-window');
        var login = $('#invite-login').val();
        if (login == '') {
            $('#invite-login').css('background-color', '#FA8072');
            $out.text('Введите логин пользователя');
            $out.show();
            return false;
        }
        var email = $('#invite-mail').val();
        if (email == '') {
            $('#invite-mail').css('background-color', '#FA8072');
            $out.text('Введите e-mail пользователя');
            $out.show();
            return false;
        }
        if (!checkValidEmail(email)) {
            $('#invite-mail').css('background-color', '#FA8072');
            $out.text('Введите корректный e-mail');
            $out.show();
            return false;
        }
        var isAdmin = $('#isAdmin').attr('checked') == 'checked' ? true : false;
        
        $out.text('');
        $out.hide();
        
        var data = {
            'login' : login,
            'email' : email,
            'isAdmin' : isAdmin
        };
        
        $.post(
                'invite.php',
                "data=" + $.toJSON(data),
                function(res, status) {
                    
                    if (!res.result) {
                        $out.text(res.error);
                        $out.show();
                    }
                    else {
                        $('#invite-login').val('');
                        $('#invite-mail').val('');
                        $($('.entry').get(1)).hide();
                        alert('Приглашение пользователю ' + login + ' успешно отправлено');
                    }
                    
                },
                'json'
        );
        
        return false;
    });
    $('#chat-exit a').click(function() { //кнопка выхода из чата
        $.get(
                'exit.php',
                function(res, status) {
                    
                    document.location = "index.php";
                },
                'html'
            );
        return false;
    });
});

function updateOnlinePlayers() {
    $.get(
        'updatePlayers.php',
        function(res, status) {
            $('#online-label').text("Онлайн (" + res.count + ")");
            var objSel = document.getElementById("onlinePlayers");
            objSel.options.length = 0;
            for(var i = 0; i < res.count; i++) {
                objSel.options[i] = new Option(res.players[i], "");
            }    
        },
        'json'
    );
    
}

function updateMessages() {
    $.get(
            'getmsg.php',
            function(res, status) {
                if (res != null ) {
                    var name = '#' + res.hash;
                    if (!$.find(name).length) {
                        if ($('#msg-wrapper').height() > 300) {
                            $($('.chat-message').get(0)).remove();
                        }
                        html = '<div id=' + res.hash + ' class="chat-message">' +
                                '<span style="color:#' + res.color + ';">' + res.nick + '</span>' + res.message +
                                '</div>';
                        $('#msg-wrapper').append(html);
                    }
                }
            },
            'json'
        );
    return false;
}

function getCookie(name) {
    var matches = document.cookie.match(new RegExp(
      "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ));
    return matches ? decodeURIComponent(matches[1]) : undefined;
}

function dhtmlLoadScript(url)
{
   var e = document.createElement("script");
   e.src = url;
   e.type="text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e); 
}

function checkValidEmail(email) {
    var re = /[0-9a-z_]+@[0-9a-z_^\.\-]+\.[a-z]{2,3}/i;
    if (!re.test(email)) {
        return false;
    }
    return true;
}